1. Technical Field
The present invention relates generally to systems with at least one host processor and one or more slave processors with their own memories.
2. Background Art
Computing systems with multiple processors (referred to as multi-processor systems) are widely used in numerous types of applications. Multi-processor systems can be broadly categorized as symmetric multi-processor systems or asymmetric multi-processor systems. The term “symmetric multi-processor system” refers to systems where most of the processors are configured to operate with similar processing capabilities. An “asymmetric multi-processor system” has at least two levels of processors, with a first level of processors configured to allocate work to a second level of processors. A system with one or more central processing units (CPU) and one or more other processors, such as, graphics processing units (GPU) or accelerated processing units (APU) that can receive work allocations from the one or more CPUs and perform the assigned processing may be referred to as an asymmetric multi-processor system.
GPUs generally comprise multiple processing elements that are ideally suited for executing the same instruction on parallel data streams, as in the case of a single instruction multiple data (SIMD) device or in data-parallel processing. In many computing models a CPU functions as the host or controlling processor and hands-off specialized functions, such as graphics processing, to other processors such as GPUs.
Multi-core CPUs, where each CPU has multiple processing cores, offer processing capabilities for specialized functions (e.g., graphics processing) similar to those available on a GPU. One or more of the computation cores of multi-core CPUs or GPUs can be part of the same die (e.g., AMD Fusion™) or, alternatively, in different dies. Recently, hybrid cores having characteristics of both CPU and GPU (e.g., AMD APUs, CellSPE™, Intel Larrabee™) have been proposed for general purpose GPU (GPGPU) style computing. The GPGPU style of computing advocates using the CPU to primarily execute control code and to offload performance critical data-parallel code to the GPU. The GPU is primarily used as an accelerator. The combination of multi-core CPUs and GPGPU computing model encompasses both CPU cores and GPU cores as accelerator targets.
In conventional asymmetrical processing systems the host processor may allocate work to slave processors based upon the type of slave processor, current processing capacity of the respective slave processors, or other techniques such as round robin allocation. These conventional techniques may not optimally utilize the processing resources of the systems. Therefore, methods and systems of work allocation in asymmetrical processing systems that result in improved utilization of processing resources are desired.